#define QUEUE_CORE_ERROR_BASE     (1)
#define QUEUE_CORE_FRAMEWORK_ERROR_BASE (QUEUE_CORE_ERROR_BASE + 10000)

#define QUEUE_NULL_POINTER        (QUEUE_CORE_FRAMEWORK_ERROR_BASE + 1)
#define QUEUE_ILLEGAL_STATE       (QUEUE_CORE_FRAMEWORK_ERROR_BASE + 2)
#define QUEUE_OUT_OF_MEMORY       (QUEUE_CORE_FRAMEWORK_ERROR_BASE + 3)


typedef struct hiSAMPLE_IVE_NODE_S {
    VIDEO_FRAME_INFO_S stFrameInfo;
    struct hiSAMPLE_IVE_NODE_S *next;
} SAMPLE_IVE_NODE_S;

typedef struct hiSAMPLE_IVE_QUEUE_S {
    SAMPLE_IVE_NODE_S *front, *rear;
} SAMPLE_IVE_QUEUE_S;

SAMPLE_IVE_QUEUE_S *SAMPLE_IVE_QueueCreate(int s32Len);

void SAMPLE_IVE_QueueDestory(SAMPLE_IVE_QUEUE_S *pstQueueHead);

void SAMPLE_IVE_QueueClear(SAMPLE_IVE_QUEUE_S *pstQueueHead);

HI_BOOL SAMPLE_IVE_QueueIsEmpty(SAMPLE_IVE_QUEUE_S *pstQueueHead);

int SAMPLE_IVE_QueueAddNode(SAMPLE_IVE_QUEUE_S *pstQueueHead, VIDEO_FRAME_INFO_S *pstFrameInfo);

SAMPLE_IVE_NODE_S *SAMPLE_IVE_QueueGetNode(SAMPLE_IVE_QUEUE_S *pstQueueHead);

void SAMPLE_IVE_QueueFreeNode(SAMPLE_IVE_NODE_S *pstNode);